package niconama04.utility;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * プロパティユーティリティ
 * 
 * @author brigen
 */
public class PropertyUtility {

	/** プロパティファイルクラスパス */
	private static final String FILE_CLASS_PATH = "setting.properties";

	/** インスタンス */
	private static final PropertyUtility instance = new PropertyUtility();

	/** 読込済フラグ */
	private boolean loaded = false;

	/** プロパティ */
	private final Properties property = new Properties();

	/**
	 * [Constructor]
	 */
	private PropertyUtility() {
	}

	/**
	 * インスタンスを返す
	 * 
	 * @return インスタンス
	 */
	public static PropertyUtility getInstance() {
		return instance;
	}

	/**
	 * プロパティ値を文字列で返す
	 * 
	 * @param x_key key
	 * @return プロパティ値
	 */
	public String getAsString(String x_key) {
		load();
		return property.getProperty(x_key);
	}

	/**
	 * プロパティ値を整数で返す
	 * 
	 * @param x_key key
	 * @return プロパティ値
	 */
	public Integer getAsInteger(String x_key) {
		load();
		String value = property.getProperty(x_key);
		return value == null ? null : Integer.valueOf(value);
	}

	/**
	 * 読込む
	 */
	private void load() {
		if (loaded) {
			return;
		}
		synchronized (property) {
			if (loaded) {
				return;
			}
			InputStream is = null;
			try {
				is = getClass().getClassLoader().getResourceAsStream(FILE_CLASS_PATH);
				property.load(is);
			} catch (IOException e) {
				throw new RuntimeException(e);
			} finally {
				if (is != null) {
					try {
						is.close();
					} catch (IOException ex) {
					}
				}
			}
			loaded = true;
		}
	}
}
